package app

import (
	"flag"
	"fmt"
	"github.com/spf13/viper"
	"math/rand"
	"time"
	"venus/common"
	"venus/util/zlog"
)

func Init() bool {
	fmt.Println("init 1")

	// 随机种子
	rand.NewSource(time.Now().UnixNano())

	// 解析命令行参数 game --env=local
	flag.StringVar(&common.Env, "env", "local", "环境")
	flag.Parse()

	viper.SetConfigName(common.Env)    // 配置文件名 (不带扩展格式)
	viper.SetConfigType("yaml")        // 如果你的配置文件没有写扩展名，那么这里需要声明你的配置文件属于什么格式
	viper.AddConfigPath("./etc/yaml/") // 配置文件的路径

	err := viper.ReadInConfig() //找到并读取配置文件
	if err != nil {             // 捕获读取中遇到的error
		panic(fmt.Errorf("Fatal error yaml file: %w \n", err))
	}

	{
		common.TcpPort = viper.GetInt("tcp.port")
		common.WsPort = viper.GetInt("ws.port")
	}

	common.Dump()

	//fmt.Println("test0", viper.Get("test0"))
	//fmt.Println("test1", viper.Get("test.test1"))
	//fmt.Println("test2", viper.Get("test.test2"))

	logConf := zlog.LogConfig{
		Output:     viper.GetString("logzap.output"),
		FilePath:   viper.GetString("logzap.filepath"),
		ServerType: viper.GetString("service-type"),
		ServerID:   viper.GetInt("self.id"),
	}
	zlog.Init(logConf)

	return true
}
